package core;

public class test {
    /**
     *  默认的是 UTF-8 编解码
     *  编码: String -> byte[], 汉字编码为 3个字节, 数字字符编码为 1个字节
     *  解码: byte[] -> String
     * @param args
     */
    public static void main(String[] args) {
        /**
         *  OK: String -> byte[] -> String
         */
        String str = "你玩的服务xx";
        byte[] bytes = str.getBytes();
        String newStr = new String(bytes);

        /**
         *  Error: byte[] -> String -> byte[]
         *  原因是:
         *  给定的字节数组实际上是自定义的
         *  进行解码时, 将 -37 和 -10 解码为了�
         *  重新编码时, 将 � 编码为了 -17, -65, -67
         *  所以前后不一致
         *  如何解决:
         *  使用 ISO-8859-1(单字节编解码)
         */
        byte[] anotherBytes = {40, -37, -10, 24, 9};       // [40, -37, -10, 24, 9]
        String anotherString = new String(anotherBytes);   // "(��\u0018\t"
        byte[] anotherNewBytes = anotherString.getBytes(); // [40, -17, -65, -67, -17, -65, -67, 24, 9]
    }
}
